package com.cskaoyan.javase.oop3._2inner._5anonymous._1usecase;

/**
 * 实际开发中,匿名内部类可以基本取代局部内部类的使用场景
 *
 * @since 16:29
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        class IAImpl implements IA {
            @Override
            public void test() {
                System.out.println("我是局部内部类的实现!");
            }
        }
        method(new IAImpl());

        // 使用匿名内部类取代局部内部类
        method(new IA() {
            @Override
            public void test() {
                System.out.println("我是匿名内部类的实现,我更加简洁高端优雅!");
            }
        });

        IA ia = method();
        ia.test();
    }

    public static void method(IA a) {
        a.test();
    }

    public static IA method() {
        // 直接返回匿名内部类对象
        return new IA() {
            @Override
            public void test() {
                System.out.println("6666666666,牛逼!");
            }
        };
    }
}

interface IA {
    void test();
}
